<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>pytils.dt</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="pytils-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="pytils-module.html">Package&nbsp;pytils</a> ::
        Module&nbsp;dt
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript: void(0);" class="privatelink"
    onclick="toggle_private();">hide private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="pytils.dt-pysrc.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<h1 class="epydoc">Source Code for <a href="pytils.dt-module.html">Module pytils.dt</a></h1>
<pre class="py-src">
<span class="py-lineno">  1</span>  <span class="py-line"><span class="py-comment"># -*- coding: utf-8 -*-</span> </span>
<span class="py-lineno">  2</span>  <span class="py-line"><span class="py-comment"></span><span class="py-comment"># -*- test-case-name: pytils.test.test_dt -*-</span> </span>
<span class="py-lineno">  3</span>  <span class="py-line"><span class="py-comment"></span><span class="py-comment"># License: GNU GPL2</span> </span>
<span class="py-lineno">  4</span>  <span class="py-line"><span class="py-comment"></span><span class="py-comment"># Author: Pythy &lt;the.pythy@gmail.com&gt;</span> </span>
<span class="py-lineno">  5</span>  <span class="py-line"><span class="py-comment"></span><span class="py-docstring">"""</span> </span>
<span class="py-lineno">  6</span>  <span class="py-line"><span class="py-docstring">Russian dates without locales</span> </span>
<span class="py-lineno">  7</span>  <span class="py-line"><span class="py-docstring">"""</span> </span>
<span class="py-lineno">  8</span>  <span class="py-line"> </span>
<span class="py-lineno">  9</span>  <span class="py-line"><span id="link-0" class="py-name"><a title="pytils.__id__
pytils.dt.__id__
pytils.numeral.__id__
pytils.templatetags.__id__
pytils.templatetags.pytils_dt.__id__
pytils.templatetags.pytils_numeral.__id__
pytils.templatetags.pytils_translit.__id__
pytils.test.__id__
pytils.test.test_dt.__id__
pytils.test.test_numeral.__id__
pytils.test.test_translit.__id__
pytils.test.test_utils.__id__
pytils.translit.__id__
pytils.utils.__id__" class="py-name" href="#" onclick="doclink('link-0', '__id__', 'Variable pytils.__id__=pytils-module.html#__id__,Variable pytils.dt.__id__=pytils.dt-module.html#__id__,Variable pytils.numeral.__id__=pytils.numeral-module.html#__id__,Variable pytils.templatetags.__id__=pytils.templatetags-module.html#__id__,Variable pytils.templatetags.pytils_dt.__id__=pytils.templatetags.pytils_dt-module.html#__id__,Variable pytils.templatetags.pytils_numeral.__id__=pytils.templatetags.pytils_numeral-module.html#__id__,Variable pytils.templatetags.pytils_translit.__id__=pytils.templatetags.pytils_translit-module.html#__id__,Variable pytils.test.__id__=pytils.test-module.html#__id__,Variable pytils.test.test_dt.__id__=pytils.test.test_dt-module.html#__id__,Variable pytils.test.test_numeral.__id__=pytils.test.test_numeral-module.html#__id__,Variable pytils.test.test_translit.__id__=pytils.test.test_translit-module.html#__id__,Variable pytils.test.test_utils.__id__=pytils.test.test_utils-module.html#__id__,Variable pytils.translit.__id__=pytils.translit-module.html#__id__,Variable pytils.utils.__id__=pytils.utils-module.html#__id__'); return false;">__id__</a></span></span> <span class="py-op">=</span> <span id="link-1" class="py-name"><a title="pytils.__revision__
pytils.dt.__revision__
pytils.numeral.__revision__
pytils.templatetags.__revision__
pytils.templatetags.pytils_dt.__revision__
pytils.templatetags.pytils_numeral.__revision__
pytils.templatetags.pytils_translit.__revision__
pytils.test.__revision__
pytils.test.test_dt.__revision__
pytils.test.test_numeral.__revision__
pytils.test.test_translit.__revision__
pytils.test.test_utils.__revision__
pytils.translit.__revision__
pytils.utils.__revision__" class="py-name" href="#" onclick="doclink('link-1', '__revision__', 'Variable pytils.__revision__=pytils-module.html#__revision__,Variable pytils.dt.__revision__=pytils.dt-module.html#__revision__,Variable pytils.numeral.__revision__=pytils.numeral-module.html#__revision__,Variable pytils.templatetags.__revision__=pytils.templatetags-module.html#__revision__,Variable pytils.templatetags.pytils_dt.__revision__=pytils.templatetags.pytils_dt-module.html#__revision__,Variable pytils.templatetags.pytils_numeral.__revision__=pytils.templatetags.pytils_numeral-module.html#__revision__,Variable pytils.templatetags.pytils_translit.__revision__=pytils.templatetags.pytils_translit-module.html#__revision__,Variable pytils.test.__revision__=pytils.test-module.html#__revision__,Variable pytils.test.test_dt.__revision__=pytils.test.test_dt-module.html#__revision__,Variable pytils.test.test_numeral.__revision__=pytils.test.test_numeral-module.html#__revision__,Variable pytils.test.test_translit.__revision__=pytils.test.test_translit-module.html#__revision__,Variable pytils.test.test_utils.__revision__=pytils.test.test_utils-module.html#__revision__,Variable pytils.translit.__revision__=pytils.translit-module.html#__revision__,Variable pytils.utils.__revision__=pytils.utils-module.html#__revision__'); return false;">__revision__</a></span></span> <span class="py-op">=</span> <span class="py-string">"$Id: dt.py 29 2006-10-21 08:28:27Z the.pythy $"</span> </span>
<span class="py-lineno"> 10</span>  <span class="py-line"><span id="link-2" class="py-name"><a title="pytils.__url__
pytils.dt.__url__
pytils.numeral.__url__
pytils.templatetags.__url__
pytils.templatetags.pytils_dt.__url__
pytils.templatetags.pytils_numeral.__url__
pytils.templatetags.pytils_translit.__url__
pytils.test.__url__
pytils.test.test_dt.__url__
pytils.test.test_numeral.__url__
pytils.test.test_translit.__url__
pytils.test.test_utils.__url__
pytils.translit.__url__
pytils.utils.__url__" class="py-name" href="#" onclick="doclink('link-2', '__url__', 'Variable pytils.__url__=pytils-module.html#__url__,Variable pytils.dt.__url__=pytils.dt-module.html#__url__,Variable pytils.numeral.__url__=pytils.numeral-module.html#__url__,Variable pytils.templatetags.__url__=pytils.templatetags-module.html#__url__,Variable pytils.templatetags.pytils_dt.__url__=pytils.templatetags.pytils_dt-module.html#__url__,Variable pytils.templatetags.pytils_numeral.__url__=pytils.templatetags.pytils_numeral-module.html#__url__,Variable pytils.templatetags.pytils_translit.__url__=pytils.templatetags.pytils_translit-module.html#__url__,Variable pytils.test.__url__=pytils.test-module.html#__url__,Variable pytils.test.test_dt.__url__=pytils.test.test_dt-module.html#__url__,Variable pytils.test.test_numeral.__url__=pytils.test.test_numeral-module.html#__url__,Variable pytils.test.test_translit.__url__=pytils.test.test_translit-module.html#__url__,Variable pytils.test.test_utils.__url__=pytils.test.test_utils-module.html#__url__,Variable pytils.translit.__url__=pytils.translit-module.html#__url__,Variable pytils.utils.__url__=pytils.utils-module.html#__url__'); return false;">__url__</a></span></span> <span class="py-op">=</span> <span class="py-string">"$URL: https://pythy.googlecode.com/svn/trunk/pytils/pytils/dt.py $"</span> </span>
<span class="py-lineno"> 11</span>  <span class="py-line"> </span>
<span class="py-lineno"> 12</span>  <span class="py-line"><span class="py-keyword">import</span> <span class="py-name">datetime</span> </span>
<span class="py-lineno"> 13</span>  <span class="py-line"> </span>
<span class="py-lineno"> 14</span>  <span class="py-line"><span class="py-keyword">from</span> <span id="link-3" class="py-name"><a title="pytils" class="py-name" href="#" onclick="doclink('link-3', 'pytils', 'Package pytils=pytils-module.html'); return false;">pytils</a></span></span> <span class="py-keyword">import</span> <span id="link-4" class="py-name"><a title="pytils.numeral" class="py-name" href="#" onclick="doclink('link-4', 'numeral', 'Module pytils.numeral=pytils.numeral-module.html'); return false;">numeral</a></span></span><span class="py-op">,</span> <span id="link-5" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-5', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span> </span>
<span class="py-lineno"> 15</span>  <span class="py-line"> </span>
<span class="py-lineno"> 16</span>  <span class="py-line"><span id="link-6" class="py-name"><a title="pytils.dt.DAY_ALTERNATIVES" class="py-name" href="#" onclick="doclink('link-6', 'DAY_ALTERNATIVES', 'Variable pytils.dt.DAY_ALTERNATIVES=pytils.dt-module.html#DAY_ALTERNATIVES'); return false;">DAY_ALTERNATIVES</a></span></span> <span class="py-op">=</span> <span class="py-op">{</span> </span>
<span class="py-lineno"> 17</span>  <span class="py-line">    <span class="py-number">1</span><span class="py-op">:</span> <span class="py-op">(</span><span class="py-string">u"&#1074;&#1095;&#1077;&#1088;&#1072;"</span><span class="py-op">,</span> <span class="py-string">u"&#1079;&#1072;&#1074;&#1090;&#1088;&#1072;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 18</span>  <span class="py-line">    <span class="py-number">2</span><span class="py-op">:</span> <span class="py-op">(</span><span class="py-string">u"&#1087;&#1086;&#1079;&#1072;&#1074;&#1095;&#1077;&#1088;&#1072;"</span><span class="py-op">,</span> <span class="py-string">u"&#1087;&#1086;&#1089;&#1083;&#1077;&#1079;&#1072;&#1074;&#1090;&#1088;&#1072;"</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 19</span>  <span class="py-line">    <span class="py-op">}</span>  <span class="py-comment">#: Day alternatives (i.e. one day ago -&gt; yesterday) </span> </span>
<span class="py-lineno"> 20</span>  <span class="py-line"> </span>
<span class="py-lineno"> 21</span>  <span class="py-line"><span id="link-7" class="py-name"><a title="pytils.dt.DAY_VARIANTS" class="py-name" href="#" onclick="doclink('link-7', 'DAY_VARIANTS', 'Variable pytils.dt.DAY_VARIANTS=pytils.dt-module.html#DAY_VARIANTS'); return false;">DAY_VARIANTS</a></span></span> <span class="py-op">=</span> <span class="py-op">(</span> </span>
<span class="py-lineno"> 22</span>  <span class="py-line">    <span class="py-string">u"&#1076;&#1077;&#1085;&#1100;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 23</span>  <span class="py-line">    <span class="py-string">u"&#1076;&#1085;&#1103;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 24</span>  <span class="py-line">    <span class="py-string">u"&#1076;&#1085;&#1077;&#1081;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 25</span>  <span class="py-line">    <span class="py-op">)</span>  <span class="py-comment">#: Forms (1, 2, 5) for noun 'day'</span> </span>
<span class="py-lineno"> 26</span>  <span class="py-line"> </span>
<span class="py-lineno"> 27</span>  <span class="py-line"><span id="link-8" class="py-name"><a title="pytils.dt.HOUR_VARIANTS" class="py-name" href="#" onclick="doclink('link-8', 'HOUR_VARIANTS', 'Variable pytils.dt.HOUR_VARIANTS=pytils.dt-module.html#HOUR_VARIANTS'); return false;">HOUR_VARIANTS</a></span></span> <span class="py-op">=</span> <span class="py-op">(</span> </span>
<span class="py-lineno"> 28</span>  <span class="py-line">    <span class="py-string">u"&#1095;&#1072;&#1089;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 29</span>  <span class="py-line">    <span class="py-string">u"&#1095;&#1072;&#1089;&#1072;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 30</span>  <span class="py-line">    <span class="py-string">u"&#1095;&#1072;&#1089;&#1086;&#1074;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 31</span>  <span class="py-line">    <span class="py-op">)</span>  <span class="py-comment">#: Forms (1, 2, 5) for noun 'hour'</span> </span>
<span class="py-lineno"> 32</span>  <span class="py-line"> </span>
<span class="py-lineno"> 33</span>  <span class="py-line"><span id="link-9" class="py-name"><a title="pytils.dt.MINUTE_VARIANTS" class="py-name" href="#" onclick="doclink('link-9', 'MINUTE_VARIANTS', 'Variable pytils.dt.MINUTE_VARIANTS=pytils.dt-module.html#MINUTE_VARIANTS'); return false;">MINUTE_VARIANTS</a></span></span> <span class="py-op">=</span> <span class="py-op">(</span> </span>
<span class="py-lineno"> 34</span>  <span class="py-line">    <span class="py-string">u"&#1084;&#1080;&#1085;&#1091;&#1090;&#1091;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 35</span>  <span class="py-line">    <span class="py-string">u"&#1084;&#1080;&#1085;&#1091;&#1090;&#1099;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 36</span>  <span class="py-line">    <span class="py-string">u"&#1084;&#1080;&#1085;&#1091;&#1090;"</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 37</span>  <span class="py-line">    <span class="py-op">)</span>  <span class="py-comment">#: Forms (1, 2, 5) for noun 'minute'</span> </span>
<span class="py-lineno"> 38</span>  <span class="py-line"> </span>
<span class="py-lineno"> 39</span>  <span class="py-line"><span id="link-10" class="py-name"><a title="pytils.dt.PREFIX_IN" class="py-name" href="#" onclick="doclink('link-10', 'PREFIX_IN', 'Variable pytils.dt.PREFIX_IN=pytils.dt-module.html#PREFIX_IN'); return false;">PREFIX_IN</a></span></span> <span class="py-op">=</span> <span class="py-string">u"&#1095;&#1077;&#1088;&#1077;&#1079;"</span>  <span class="py-comment">#: Prefix 'in' (i.e. B{in} three hours)</span> </span>
<span class="py-lineno"> 40</span>  <span class="py-line"><span id="link-11" class="py-name"><a title="pytils.dt.SUFFIX_AGO" class="py-name" href="#" onclick="doclink('link-11', 'SUFFIX_AGO', 'Variable pytils.dt.SUFFIX_AGO=pytils.dt-module.html#SUFFIX_AGO'); return false;">SUFFIX_AGO</a></span></span> <span class="py-op">=</span> <span class="py-string">u"&#1085;&#1072;&#1079;&#1072;&#1076;"</span>  <span class="py-comment">#: Prefix 'ago' (i.e. three hours B{ago})</span> </span>
<span class="py-lineno"> 41</span>  <span class="py-line"> </span>
<span class="py-lineno"> 42</span>  <span class="py-line"><span id="link-12" class="py-name"><a title="pytils.dt.MONTH_NAMES" class="py-name" href="#" onclick="doclink('link-12', 'MONTH_NAMES', 'Variable pytils.dt.MONTH_NAMES=pytils.dt-module.html#MONTH_NAMES'); return false;">MONTH_NAMES</a></span></span> <span class="py-op">=</span> <span class="py-op">(</span> </span>
<span class="py-lineno"> 43</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1103;&#1085;&#1074;"</span><span class="py-op">,</span> <span class="py-string">u"&#1103;&#1085;&#1074;&#1072;&#1088;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1103;&#1085;&#1074;&#1072;&#1088;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 44</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1092;&#1077;&#1074;"</span><span class="py-op">,</span> <span class="py-string">u"&#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 45</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1084;&#1072;&#1088;"</span><span class="py-op">,</span> <span class="py-string">u"&#1084;&#1072;&#1088;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1084;&#1072;&#1088;&#1090;&#1072;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 46</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1072;&#1087;&#1088;"</span><span class="py-op">,</span> <span class="py-string">u"&#1072;&#1087;&#1088;&#1077;&#1083;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1072;&#1087;&#1088;&#1077;&#1083;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 47</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1084;&#1072;&#1081;"</span><span class="py-op">,</span> <span class="py-string">u"&#1084;&#1072;&#1081;"</span><span class="py-op">,</span> <span class="py-string">u"&#1084;&#1072;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 48</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1080;&#1102;&#1085;"</span><span class="py-op">,</span> <span class="py-string">u"&#1080;&#1102;&#1085;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1080;&#1102;&#1085;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 49</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1080;&#1102;&#1083;"</span><span class="py-op">,</span> <span class="py-string">u"&#1080;&#1102;&#1083;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1080;&#1102;&#1083;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 50</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1072;&#1074;&#1075;"</span><span class="py-op">,</span> <span class="py-string">u"&#1072;&#1074;&#1075;&#1091;&#1089;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1072;&#1074;&#1075;&#1091;&#1089;&#1090;&#1072;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 51</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1089;&#1077;&#1085;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1077;&#1085;&#1090;&#1103;&#1073;&#1088;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1077;&#1085;&#1090;&#1103;&#1073;&#1088;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 52</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1086;&#1082;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1086;&#1082;&#1090;&#1103;&#1073;&#1088;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1086;&#1082;&#1090;&#1103;&#1073;&#1088;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 53</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1085;&#1086;&#1103;"</span><span class="py-op">,</span> <span class="py-string">u"&#1085;&#1086;&#1103;&#1073;&#1088;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1085;&#1086;&#1103;&#1073;&#1088;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 54</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1076;&#1077;&#1082;"</span><span class="py-op">,</span> <span class="py-string">u"&#1076;&#1077;&#1082;&#1072;&#1073;&#1088;&#1100;"</span><span class="py-op">,</span> <span class="py-string">u"&#1076;&#1077;&#1082;&#1072;&#1073;&#1088;&#1103;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 55</span>  <span class="py-line">    <span class="py-op">)</span>  <span class="py-comment">#: Month names (abbreviated, full, inflected)</span> </span>
<span class="py-lineno"> 56</span>  <span class="py-line"> </span>
<span class="py-lineno"> 57</span>  <span class="py-line"><span id="link-13" class="py-name"><a title="pytils.dt.DAY_NAMES" class="py-name" href="#" onclick="doclink('link-13', 'DAY_NAMES', 'Variable pytils.dt.DAY_NAMES=pytils.dt-module.html#DAY_NAMES'); return false;">DAY_NAMES</a></span></span> <span class="py-op">=</span> <span class="py-op">(</span> </span>
<span class="py-lineno"> 58</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1087;&#1085;"</span><span class="py-op">,</span> <span class="py-string">u"&#1087;&#1086;&#1085;&#1077;&#1076;&#1077;&#1083;&#1100;&#1085;&#1080;&#1082;"</span><span class="py-op">,</span> <span class="py-string">u"&#1087;&#1086;&#1085;&#1077;&#1076;&#1077;&#1083;&#1100;&#1085;&#1080;&#1082;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 59</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1074;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1074;&#1090;&#1086;&#1088;&#1085;&#1080;&#1082;"</span><span class="py-op">,</span> <span class="py-string">u"&#1074;&#1090;&#1086;&#1088;&#1085;&#1080;&#1082;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 60</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1089;&#1088;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1088;&#1077;&#1076;&#1072;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1088;&#1077;&#1076;&#1091;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 61</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1095;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1095;&#1077;&#1090;&#1074;&#1077;&#1088;&#1075;"</span><span class="py-op">,</span> <span class="py-string">u"&#1095;&#1077;&#1090;&#1074;&#1077;&#1088;&#1075;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 62</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1087;&#1090;"</span><span class="py-op">,</span> <span class="py-string">u"&#1087;&#1103;&#1090;&#1085;&#1080;&#1094;&#1072;"</span><span class="py-op">,</span> <span class="py-string">u"&#1087;&#1103;&#1090;&#1085;&#1080;&#1094;&#1091;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 63</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1089;&#1073;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1091;&#1073;&#1073;&#1086;&#1090;&#1072;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1091;&#1073;&#1073;&#1086;&#1090;&#1091;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 64</span>  <span class="py-line">    <span class="py-op">(</span><span class="py-string">u"&#1074;&#1089;&#1082;"</span><span class="py-op">,</span> <span class="py-string">u"&#1074;&#1086;&#1089;&#1082;&#1088;&#1077;&#1089;&#1077;&#1085;&#1100;&#1077;"</span><span class="py-op">,</span> <span class="py-string">u"&#1089;&#1091;&#1073;&#1073;&#1086;&#1090;&#1091;"</span><span class="py-op">)</span><span class="py-op">,</span> </span>
<span class="py-lineno"> 65</span>  <span class="py-line">    <span class="py-op">)</span>  <span class="py-comment">#: Day names (abbreviated, full, inflected)</span> </span>
<span class="py-lineno"> 66</span>  <span class="py-line"> </span>
<span class="py-lineno"> 67</span>  <span class="py-line"> </span>
<a name="distance_of_time_in_words"></a><div id="distance_of_time_in_words-def"><span class="py-lineno"> 68</span> <a class="py-toggle" href="#" id="distance_of_time_in_words-toggle" onclick="toggle('distance_of_time_in_words'); return false;">-</a><span class="py-line"><span class="py-keyword">def</span> <a class="py-def-name" href="pytils.dt-module.html#distance_of_time_in_words">distance_of_time_in_words</a><span class="py-op">(</span><span class="py-param">from_time</span><span class="py-op">,</span> <span class="py-param">accuracy</span><span class="py-op">=</span><span class="py-number">1</span><span class="py-op">,</span> <span class="py-param">to_time</span><span class="py-op">=</span><span class="py-name">None</span><span class="py-op">)</span><span class="py-op">:</span> </span>
</div><div id="distance_of_time_in_words-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="distance_of_time_in_words-expanded"><span class="py-lineno"> 69</span>  <span class="py-line">    <span class="py-docstring">"""</span> </span>
<span class="py-lineno"> 70</span>  <span class="py-line"><span class="py-docstring">    Represents distance of time in words</span> </span>
<span class="py-lineno"> 71</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno"> 72</span>  <span class="py-line"><span class="py-docstring">    @param from_time: source time (in seconds from epoch)</span> </span>
<span class="py-lineno"> 73</span>  <span class="py-line"><span class="py-docstring">    @type from_time: C{int}, C{float} or C{datetime.datetime}</span> </span>
<span class="py-lineno"> 74</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno"> 75</span>  <span class="py-line"><span class="py-docstring">    @param accuracy: level of accuracy (1..3), default=1</span> </span>
<span class="py-lineno"> 76</span>  <span class="py-line"><span class="py-docstring">    @type accuracy: C{int}</span> </span>
<span class="py-lineno"> 77</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno"> 78</span>  <span class="py-line"><span class="py-docstring">    @param to_time: target time (in seconds from epoch),</span> </span>
<span class="py-lineno"> 79</span>  <span class="py-line"><span class="py-docstring">        default=None translates to current time</span> </span>
<span class="py-lineno"> 80</span>  <span class="py-line"><span class="py-docstring">    @type to_time: C{int}, C{float} or C{datetime.datetime}</span> </span>
<span class="py-lineno"> 81</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno"> 82</span>  <span class="py-line"><span class="py-docstring">    @return: distance of time in words</span> </span>
<span class="py-lineno"> 83</span>  <span class="py-line"><span class="py-docstring">    @rtype: unicode</span> </span>
<span class="py-lineno"> 84</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno"> 85</span>  <span class="py-line"><span class="py-docstring">    @raise TypeError: input parameters' check failed</span> </span>
<span class="py-lineno"> 86</span>  <span class="py-line"><span class="py-docstring">    @raise ValueError: accuracy is lesser or equal zero</span> </span>
<span class="py-lineno"> 87</span>  <span class="py-line"><span class="py-docstring">    """</span> </span>
<span class="py-lineno"> 88</span>  <span class="py-line">    <span class="py-name">current</span> <span class="py-op">=</span> <span class="py-name">False</span> </span>
<span class="py-lineno"> 89</span>  <span class="py-line">     </span>
<span class="py-lineno"> 90</span>  <span class="py-line">    <span class="py-keyword">if</span> <span class="py-name">to_time</span> <span class="py-keyword">is</span> <span class="py-name">None</span><span class="py-op">:</span> </span>
<span class="py-lineno"> 91</span>  <span class="py-line">        <span class="py-name">current</span> <span class="py-op">=</span> <span class="py-name">True</span> </span>
<span class="py-lineno"> 92</span>  <span class="py-line">        <span class="py-name">to_time</span> <span class="py-op">=</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">now</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 93</span>  <span class="py-line"> </span>
<span class="py-lineno"> 94</span>  <span class="py-line">    <span id="link-14" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-14', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-15" class="py-name"><a title="pytils.utils.check_type" class="py-name" href="#" onclick="doclink('link-15', 'check_type', 'Function pytils.utils.check_type()=pytils.utils-module.html#check_type'); return false;">check_type</a></span></span><span class="py-op">(</span><span class="py-string">'from_time'</span><span class="py-op">,</span> <span class="py-op">(</span><span class="py-name">int</span><span class="py-op">,</span> <span class="py-name">float</span><span class="py-op">,</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 95</span>  <span class="py-line">    <span id="link-16" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-16', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-17" class="py-name"><a title="pytils.utils.check_type" class="py-name" href="#" onclick="doclink('link-17', 'check_type', 'Function pytils.utils.check_type()=pytils.utils-module.html#check_type'); return false;">check_type</a></span></span><span class="py-op">(</span><span class="py-string">'to_time'</span><span class="py-op">,</span> <span class="py-op">(</span><span class="py-name">int</span><span class="py-op">,</span> <span class="py-name">float</span><span class="py-op">,</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 96</span>  <span class="py-line">    <span id="link-18" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-18', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-19" class="py-name"><a title="pytils.utils.check_type" class="py-name" href="#" onclick="doclink('link-19', 'check_type', 'Function pytils.utils.check_type()=pytils.utils-module.html#check_type'); return false;">check_type</a></span></span><span class="py-op">(</span><span class="py-string">'accuracy'</span><span class="py-op">,</span> <span class="py-name">int</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 97</span>  <span class="py-line">    <span id="link-20" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-20', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-21" class="py-name"><a title="pytils.utils.check_positive" class="py-name" href="#" onclick="doclink('link-21', 'check_positive', 'Function pytils.utils.check_positive()=pytils.utils-module.html#check_positive'); return false;">check_positive</a></span></span><span class="py-op">(</span><span class="py-string">'accuracy'</span><span class="py-op">,</span> <span class="py-name">strict</span><span class="py-op">=</span><span class="py-name">True</span><span class="py-op">)</span> </span>
<span class="py-lineno"> 98</span>  <span class="py-line"> </span>
<span class="py-lineno"> 99</span>  <span class="py-line">    <span class="py-keyword">if</span> <span class="py-keyword">not</span> <span class="py-name">isinstance</span><span class="py-op">(</span><span class="py-name">from_time</span><span class="py-op">,</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">)</span><span class="py-op">:</span> </span>
<span class="py-lineno">100</span>  <span class="py-line">        <span class="py-name">from_time</span> <span class="py-op">=</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">fromtimestamp</span><span class="py-op">(</span><span class="py-name">from_time</span><span class="py-op">)</span> </span>
<span class="py-lineno">101</span>  <span class="py-line"> </span>
<span class="py-lineno">102</span>  <span class="py-line">    <span class="py-keyword">if</span> <span class="py-keyword">not</span> <span class="py-name">isinstance</span><span class="py-op">(</span><span class="py-name">to_time</span><span class="py-op">,</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">)</span><span class="py-op">:</span> </span>
<span class="py-lineno">103</span>  <span class="py-line">        <span class="py-name">to_time</span> <span class="py-op">=</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">fromtimestamp</span><span class="py-op">(</span><span class="py-name">to_time</span><span class="py-op">)</span> </span>
<span class="py-lineno">104</span>  <span class="py-line"> </span>
<span class="py-lineno">105</span>  <span class="py-line">    <span class="py-name">dt_delta</span> <span class="py-op">=</span> <span class="py-name">to_time</span> <span class="py-op">-</span> <span class="py-name">from_time</span> </span>
<span class="py-lineno">106</span>  <span class="py-line">    <span class="py-name">difference</span> <span class="py-op">=</span> <span class="py-name">dt_delta</span><span class="py-op">.</span><span class="py-name">days</span><span class="py-op">*</span><span class="py-number">86400</span> <span class="py-op">+</span> <span class="py-name">dt_delta</span><span class="py-op">.</span><span class="py-name">seconds</span> </span>
<span class="py-lineno">107</span>  <span class="py-line"> </span>
<span class="py-lineno">108</span>  <span class="py-line">    <span class="py-name">seconds_orig</span> <span class="py-op">=</span> <span class="py-name">int</span><span class="py-op">(</span><span class="py-name">abs</span><span class="py-op">(</span><span class="py-name">difference</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">109</span>  <span class="py-line">    <span class="py-name">minutes_orig</span> <span class="py-op">=</span> <span class="py-name">int</span><span class="py-op">(</span><span class="py-name">abs</span><span class="py-op">(</span><span class="py-name">difference</span><span class="py-op">)</span><span class="py-op">/</span><span class="py-number">60.0</span><span class="py-op">)</span> </span>
<span class="py-lineno">110</span>  <span class="py-line">    <span class="py-name">hours_orig</span>   <span class="py-op">=</span> <span class="py-name">int</span><span class="py-op">(</span><span class="py-name">abs</span><span class="py-op">(</span><span class="py-name">difference</span><span class="py-op">)</span><span class="py-op">/</span><span class="py-number">3600.0</span><span class="py-op">)</span> </span>
<span class="py-lineno">111</span>  <span class="py-line">    <span class="py-name">days_orig</span> <span class="py-op">=</span>    <span class="py-name">int</span><span class="py-op">(</span><span class="py-name">abs</span><span class="py-op">(</span><span class="py-name">difference</span><span class="py-op">)</span><span class="py-op">/</span><span class="py-number">86400.0</span><span class="py-op">)</span> </span>
<span class="py-lineno">112</span>  <span class="py-line">    <span class="py-name">in_future</span> <span class="py-op">=</span> <span class="py-name">from_time</span> <span class="py-op">&gt;</span> <span class="py-name">to_time</span> </span>
<span class="py-lineno">113</span>  <span class="py-line"> </span>
<span class="py-lineno">114</span>  <span class="py-line">    <span class="py-name">words</span> <span class="py-op">=</span> <span class="py-op">[</span><span class="py-op">]</span> </span>
<span class="py-lineno">115</span>  <span class="py-line">    <span class="py-name">values</span> <span class="py-op">=</span> <span class="py-op">[</span><span class="py-op">]</span> </span>
<span class="py-lineno">116</span>  <span class="py-line">    <span class="py-name">alternatives</span> <span class="py-op">=</span> <span class="py-op">[</span><span class="py-op">]</span> </span>
<span class="py-lineno">117</span>  <span class="py-line"> </span>
<span class="py-lineno">118</span>  <span class="py-line">    <span class="py-name">days</span> <span class="py-op">=</span> <span class="py-name">days_orig</span> </span>
<span class="py-lineno">119</span>  <span class="py-line">    <span class="py-name">hours</span> <span class="py-op">=</span> <span class="py-name">hours_orig</span> <span class="py-op">-</span> <span class="py-name">days_orig</span><span class="py-op">*</span><span class="py-number">24</span> </span>
<span class="py-lineno">120</span>  <span class="py-line"> </span>
<span class="py-lineno">121</span>  <span class="py-line">    <span class="py-name">words</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-string">u"%d %s"</span> <span class="py-op">%</span> <span class="py-op">(</span><span class="py-name">days</span><span class="py-op">,</span> <span id="link-22" class="py-name"><a title="pytils.numeral" class="py-name" href="#" onclick="doclink('link-22', 'numeral', 'Module pytils.numeral=pytils.numeral-module.html'); return false;">numeral</a></span></span><span class="py-op">.</span><span id="link-23" class="py-name"><a title="pytils.numeral.choose_plural
pytils.templatetags.pytils_numeral.choose_plural" class="py-name" href="#" onclick="doclink('link-23', 'choose_plural', 'Function pytils.numeral.choose_plural()=pytils.numeral-module.html#choose_plural,Function pytils.templatetags.pytils_numeral.choose_plural()=pytils.templatetags.pytils_numeral-module.html#choose_plural'); return false;">choose_plural</a></span></span><span class="py-op">(</span><span class="py-name">days</span><span class="py-op">,</span> <span id="link-24" class="py-name"><a title="pytils.dt.DAY_VARIANTS" class="py-name" href="#" onclick="doclink('link-24', 'DAY_VARIANTS', 'Variable pytils.dt.DAY_VARIANTS=pytils.dt-module.html#DAY_VARIANTS'); return false;">DAY_VARIANTS</a></span></span><span class="py-op">)</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">122</span>  <span class="py-line">    <span class="py-name">values</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-name">days</span><span class="py-op">)</span> </span>
<span class="py-lineno">123</span>  <span class="py-line">     </span>
<span class="py-lineno">124</span>  <span class="py-line">    <span class="py-name">words</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-string">u"%d %s"</span> <span class="py-op">%</span> \ </span>
<span class="py-lineno">125</span>  <span class="py-line">                  <span class="py-op">(</span><span class="py-name">hours</span><span class="py-op">,</span> <span id="link-25" class="py-name"><a title="pytils.numeral" class="py-name" href="#" onclick="doclink('link-25', 'numeral', 'Module pytils.numeral=pytils.numeral-module.html'); return false;">numeral</a></span></span><span class="py-op">.</span><span id="link-26" class="py-name"><a title="pytils.numeral.choose_plural
pytils.templatetags.pytils_numeral.choose_plural" class="py-name" href="#" onclick="doclink('link-26', 'choose_plural', 'Function pytils.numeral.choose_plural()=pytils.numeral-module.html#choose_plural,Function pytils.templatetags.pytils_numeral.choose_plural()=pytils.templatetags.pytils_numeral-module.html#choose_plural'); return false;">choose_plural</a></span></span><span class="py-op">(</span><span class="py-name">hours</span><span class="py-op">,</span> <span id="link-27" class="py-name"><a title="pytils.dt.HOUR_VARIANTS" class="py-name" href="#" onclick="doclink('link-27', 'HOUR_VARIANTS', 'Variable pytils.dt.HOUR_VARIANTS=pytils.dt-module.html#HOUR_VARIANTS'); return false;">HOUR_VARIANTS</a></span></span><span class="py-op">)</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">126</span>  <span class="py-line">    <span class="py-name">values</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-name">hours</span><span class="py-op">)</span> </span>
<span class="py-lineno">127</span>  <span class="py-line"> </span>
<span class="py-lineno">128</span>  <span class="py-line">    <span class="py-name">hours</span> <span class="py-op">==</span> <span class="py-number">1</span> <span class="py-keyword">and</span> <span class="py-name">current</span> <span class="py-keyword">and</span> <span class="py-name">alternatives</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-string">u"&#1095;&#1072;&#1089;"</span><span class="py-op">)</span> </span>
<span class="py-lineno">129</span>  <span class="py-line"> </span>
<span class="py-lineno">130</span>  <span class="py-line">    <span class="py-name">minutes</span> <span class="py-op">=</span> <span class="py-name">minutes_orig</span> <span class="py-op">-</span> <span class="py-name">hours_orig</span><span class="py-op">*</span><span class="py-number">60</span> </span>
<span class="py-lineno">131</span>  <span class="py-line"> </span>
<span class="py-lineno">132</span>  <span class="py-line">    <span class="py-name">words</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-string">u"%d %s"</span> <span class="py-op">%</span> <span class="py-op">(</span><span class="py-name">minutes</span><span class="py-op">,</span> </span>
<span class="py-lineno">133</span>  <span class="py-line">                              <span id="link-28" class="py-name"><a title="pytils.numeral" class="py-name" href="#" onclick="doclink('link-28', 'numeral', 'Module pytils.numeral=pytils.numeral-module.html'); return false;">numeral</a></span></span><span class="py-op">.</span><span id="link-29" class="py-name"><a title="pytils.numeral.choose_plural
pytils.templatetags.pytils_numeral.choose_plural" class="py-name" href="#" onclick="doclink('link-29', 'choose_plural', 'Function pytils.numeral.choose_plural()=pytils.numeral-module.html#choose_plural,Function pytils.templatetags.pytils_numeral.choose_plural()=pytils.templatetags.pytils_numeral-module.html#choose_plural'); return false;">choose_plural</a></span></span><span class="py-op">(</span><span class="py-name">minutes</span><span class="py-op">,</span> <span id="link-30" class="py-name"><a title="pytils.dt.MINUTE_VARIANTS" class="py-name" href="#" onclick="doclink('link-30', 'MINUTE_VARIANTS', 'Variable pytils.dt.MINUTE_VARIANTS=pytils.dt-module.html#MINUTE_VARIANTS'); return false;">MINUTE_VARIANTS</a></span></span><span class="py-op">)</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">134</span>  <span class="py-line">    <span class="py-name">values</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-name">minutes</span><span class="py-op">)</span> </span>
<span class="py-lineno">135</span>  <span class="py-line"> </span>
<span class="py-lineno">136</span>  <span class="py-line">    <span class="py-name">minutes</span> <span class="py-op">==</span> <span class="py-number">1</span> <span class="py-keyword">and</span> <span class="py-name">current</span> <span class="py-keyword">and</span> <span class="py-name">alternatives</span><span class="py-op">.</span><span class="py-name">append</span><span class="py-op">(</span><span class="py-string">u"&#1084;&#1080;&#1085;&#1091;&#1090;&#1091;"</span><span class="py-op">)</span> </span>
<span class="py-lineno">137</span>  <span class="py-line"> </span>
<span class="py-lineno">138</span>  <span class="py-line">    <span class="py-name">real_words</span> <span class="py-op">=</span> <span class="py-name">words</span> </span>
<span class="py-lineno">139</span>  <span class="py-line">    <span class="py-comment"># &#1091;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1080;&#1079; values &#1080; words &#1082;&#1086;&#1085;&#1077;&#1095;&#1085;&#1099;&#1077; &#1085;&#1091;&#1083;&#1080;</span> </span>
<span class="py-lineno">140</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-keyword">while</span> <span class="py-name">values</span> <span class="py-keyword">and</span> <span class="py-keyword">not</span> <span class="py-name">values</span><span class="py-op">[</span><span class="py-op">-</span><span class="py-number">1</span><span class="py-op">]</span><span class="py-op">:</span> </span>
<span class="py-lineno">141</span>  <span class="py-line">        <span class="py-name">values</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno">142</span>  <span class="py-line">        <span class="py-name">words</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno">143</span>  <span class="py-line">    <span class="py-comment"># &#1091;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1080;&#1079; values &#1080; words &#1085;&#1072;&#1095;&#1072;&#1083;&#1100;&#1085;&#1099;&#1077; &#1085;&#1091;&#1083;&#1080;</span> </span>
<span class="py-lineno">144</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-keyword">while</span> <span class="py-name">values</span> <span class="py-keyword">and</span> <span class="py-keyword">not</span> <span class="py-name">values</span><span class="py-op">[</span><span class="py-number">0</span><span class="py-op">]</span><span class="py-op">:</span> </span>
<span class="py-lineno">145</span>  <span class="py-line">        <span class="py-name">values</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-number">0</span><span class="py-op">)</span> </span>
<span class="py-lineno">146</span>  <span class="py-line">        <span class="py-name">words</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-number">0</span><span class="py-op">)</span> </span>
<span class="py-lineno">147</span>  <span class="py-line">    <span class="py-name">limit</span> <span class="py-op">=</span> <span class="py-name">min</span><span class="py-op">(</span><span class="py-name">accuracy</span><span class="py-op">,</span> <span class="py-name">len</span><span class="py-op">(</span><span class="py-name">words</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">148</span>  <span class="py-line">    <span class="py-name">real_words</span> <span class="py-op">=</span> <span class="py-name">words</span><span class="py-op">[</span><span class="py-op">:</span><span class="py-name">limit</span><span class="py-op">]</span> </span>
<span class="py-lineno">149</span>  <span class="py-line">    <span class="py-name">real_values</span> <span class="py-op">=</span> <span class="py-name">values</span><span class="py-op">[</span><span class="py-op">:</span><span class="py-name">limit</span><span class="py-op">]</span> </span>
<span class="py-lineno">150</span>  <span class="py-line">    <span class="py-comment"># &#1089;&#1085;&#1086;&#1074;&#1072; &#1091;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1082;&#1086;&#1085;&#1077;&#1095;&#1085;&#1099;&#1077; &#1085;&#1091;&#1083;&#1080;</span> </span>
<span class="py-lineno">151</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-keyword">while</span> <span class="py-name">real_values</span> <span class="py-keyword">and</span> <span class="py-keyword">not</span> <span class="py-name">real_values</span><span class="py-op">[</span><span class="py-op">-</span><span class="py-number">1</span><span class="py-op">]</span><span class="py-op">:</span> </span>
<span class="py-lineno">152</span>  <span class="py-line">        <span class="py-name">real_values</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno">153</span>  <span class="py-line">        <span class="py-name">real_words</span><span class="py-op">.</span><span class="py-name">pop</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno">154</span>  <span class="py-line">        <span class="py-name">limit</span> <span class="py-op">-=</span> <span class="py-number">1</span> </span>
<span class="py-lineno">155</span>  <span class="py-line"> </span>
<span class="py-lineno">156</span>  <span class="py-line">    <span class="py-name">real_str</span> <span class="py-op">=</span> <span class="py-string">u" "</span><span class="py-op">.</span><span class="py-name">join</span><span class="py-op">(</span><span class="py-name">real_words</span><span class="py-op">)</span> </span>
<span class="py-lineno">157</span>  <span class="py-line">     </span>
<span class="py-lineno">158</span>  <span class="py-line">    <span class="py-comment"># &#1072;&#1083;&#1100;&#1090;&#1077;&#1088;&#1085;&#1072;&#1090;&#1080;&#1074;&#1085;&#1099;&#1077; &#1074;&#1072;&#1088;&#1080;&#1072;&#1085;&#1090;&#1099; &#1085;&#1091;&#1078;&#1085;&#1099; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1077;&#1089;&#1083;&#1080; &#1074; real_words &#1086;&#1076;&#1085;&#1086; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077;</span> </span>
<span class="py-lineno">159</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-comment"># &#1080;, &#1074;&#1076;&#1086;&#1073;&#1072;&#1074;&#1086;&#1082;, &#1077;&#1089;&#1083;&#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103; &#1090;&#1077;&#1082;&#1091;&#1097;&#1077;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103;</span> </span>
<span class="py-lineno">160</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-name">alter_str</span> <span class="py-op">=</span> <span class="py-name">limit</span> <span class="py-op">==</span> <span class="py-number">1</span> <span class="py-keyword">and</span> <span class="py-name">current</span> <span class="py-keyword">and</span> \ </span>
<span class="py-lineno">161</span>  <span class="py-line">                <span class="py-name">alternatives</span> <span class="py-keyword">and</span> <span class="py-name">alternatives</span><span class="py-op">[</span><span class="py-number">0</span><span class="py-op">]</span> </span>
<span class="py-lineno">162</span>  <span class="py-line">    <span class="py-name">_result_str</span> <span class="py-op">=</span> <span class="py-name">alter_str</span> <span class="py-keyword">or</span> <span class="py-name">real_str</span> </span>
<span class="py-lineno">163</span>  <span class="py-line">    <span class="py-name">result_str</span> <span class="py-op">=</span> <span class="py-name">in_future</span> <span class="py-keyword">and</span> <span class="py-string">u"%s %s"</span> <span class="py-op">%</span> <span class="py-op">(</span><span id="link-31" class="py-name"><a title="pytils.dt.PREFIX_IN" class="py-name" href="#" onclick="doclink('link-31', 'PREFIX_IN', 'Variable pytils.dt.PREFIX_IN=pytils.dt-module.html#PREFIX_IN'); return false;">PREFIX_IN</a></span></span><span class="py-op">,</span> <span class="py-name">_result_str</span><span class="py-op">)</span> \ </span>
<span class="py-lineno">164</span>  <span class="py-line">                           <span class="py-keyword">or</span> <span class="py-string">u"%s %s"</span> <span class="py-op">%</span> <span class="py-op">(</span><span class="py-name">_result_str</span><span class="py-op">,</span> <span id="link-32" class="py-name"><a title="pytils.dt.SUFFIX_AGO" class="py-name" href="#" onclick="doclink('link-32', 'SUFFIX_AGO', 'Variable pytils.dt.SUFFIX_AGO=pytils.dt-module.html#SUFFIX_AGO'); return false;">SUFFIX_AGO</a></span></span><span class="py-op">)</span> </span>
<span class="py-lineno">165</span>  <span class="py-line"> </span>
<span class="py-lineno">166</span>  <span class="py-line">    <span class="py-comment"># &#1077;&#1089;&#1083;&#1080; &#1078;&#1077; &#1087;&#1088;&#1086;&#1096;&#1083;&#1086; &#1084;&#1077;&#1085;&#1077;&#1077; &#1084;&#1080;&#1085;&#1091;&#1090;&#1099;, &#1090;&#1086; real_words -- &#1087;&#1091;&#1089;&#1090;&#1086;&#1081;, &#1080; &#1087;&#1086;&#1101;&#1090;&#1086;&#1084;&#1091;</span> </span>
<span class="py-lineno">167</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-comment"># &#1085;&#1091;&#1078;&#1085;&#1086; &#1073;&#1088;&#1072;&#1090;&#1100; alternatives[0], &#1072; &#1085;&#1077; result_str</span> </span>
<span class="py-lineno">168</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-name">zero_str</span> <span class="py-op">=</span> <span class="py-name">minutes</span> <span class="py-op">==</span> <span class="py-number">0</span> <span class="py-keyword">and</span> <span class="py-keyword">not</span> <span class="py-name">real_words</span> <span class="py-keyword">and</span> \ </span>
<span class="py-lineno">169</span>  <span class="py-line">            <span class="py-op">(</span><span class="py-name">in_future</span> <span class="py-keyword">and</span> <span class="py-string">u"&#1084;&#1077;&#1085;&#1077;&#1077; &#1095;&#1077;&#1084; &#1095;&#1077;&#1088;&#1077;&#1079; &#1084;&#1080;&#1085;&#1091;&#1090;&#1091;"</span> \ </span>
<span class="py-lineno">170</span>  <span class="py-line">                        <span class="py-keyword">or</span> <span class="py-string">u"&#1084;&#1077;&#1085;&#1077;&#1077; &#1084;&#1080;&#1085;&#1091;&#1090;&#1099; &#1085;&#1072;&#1079;&#1072;&#1076;"</span><span class="py-op">)</span> </span>
<span class="py-lineno">171</span>  <span class="py-line"> </span>
<span class="py-lineno">172</span>  <span class="py-line">    <span class="py-comment"># &#1085;&#1091;&#1078;&#1085;&#1086; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074;&#1095;&#1077;&#1088;&#1072;/&#1087;&#1086;&#1079;&#1072;&#1074;&#1095;&#1077;&#1088;&#1072;/&#1079;&#1072;&#1074;&#1090;&#1088;&#1072;/&#1087;&#1086;&#1089;&#1083;&#1077;&#1079;&#1072;&#1074;&#1090;&#1088;&#1072;</span> </span>
<span class="py-lineno">173</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-comment"># &#1077;&#1089;&#1083;&#1080; days 1..2 &#1080; &#1074; real_words &#1086;&#1076;&#1085;&#1086; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077;</span> </span>
<span class="py-lineno">174</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-name">day_alternatives</span> <span class="py-op">=</span> <span id="link-33" class="py-name"><a title="pytils.dt.DAY_ALTERNATIVES" class="py-name" href="#" onclick="doclink('link-33', 'DAY_ALTERNATIVES', 'Variable pytils.dt.DAY_ALTERNATIVES=pytils.dt-module.html#DAY_ALTERNATIVES'); return false;">DAY_ALTERNATIVES</a></span></span><span class="py-op">.</span><span class="py-name">get</span><span class="py-op">(</span><span class="py-name">days</span><span class="py-op">,</span> <span class="py-name">False</span><span class="py-op">)</span> </span>
<span class="py-lineno">175</span>  <span class="py-line">    <span class="py-name">alternate_day</span> <span class="py-op">=</span> <span class="py-name">day_alternatives</span> <span class="py-keyword">and</span> <span class="py-name">current</span> <span class="py-keyword">and</span> <span class="py-name">limit</span> <span class="py-op">==</span> <span class="py-number">1</span> <span class="py-keyword">and</span> \ </span>
<span class="py-lineno">176</span>  <span class="py-line">                    <span class="py-op">(</span><span class="py-op">(</span><span class="py-name">in_future</span> <span class="py-keyword">and</span> <span class="py-name">day_alternatives</span><span class="py-op">[</span><span class="py-number">1</span><span class="py-op">]</span><span class="py-op">)</span> \ </span>
<span class="py-lineno">177</span>  <span class="py-line">                                 <span class="py-keyword">or</span> <span class="py-name">day_alternatives</span><span class="py-op">[</span><span class="py-number">0</span><span class="py-op">]</span><span class="py-op">)</span> </span>
<span class="py-lineno">178</span>  <span class="py-line"> </span>
<span class="py-lineno">179</span>  <span class="py-line">     </span>
<span class="py-lineno">180</span>  <span class="py-line">    <span class="py-name">final_str</span> <span class="py-op">=</span> <span class="py-keyword">not</span> <span class="py-name">real_words</span> <span class="py-keyword">and</span> <span class="py-name">zero_str</span> <span class="py-keyword">or</span> <span class="py-name">alternate_day</span> <span class="py-keyword">or</span> <span class="py-name">result_str</span> </span>
<span class="py-lineno">181</span>  <span class="py-line"> </span>
<span class="py-lineno">182</span>  <span class="py-line">    <span class="py-keyword">return</span> <span class="py-name">final_str</span> </span>
</div><span class="py-lineno">183</span>  <span class="py-line"> </span>
<span class="py-lineno">184</span>  <span class="py-line"> </span>
<a name="ru_strftime"></a><div id="ru_strftime-def"><span class="py-lineno">185</span> <a class="py-toggle" href="#" id="ru_strftime-toggle" onclick="toggle('ru_strftime'); return false;">-</a><span class="py-line"><span class="py-keyword">def</span> <a class="py-def-name" href="pytils.dt-module.html#ru_strftime">ru_strftime</a><span class="py-op">(</span><span class="py-param">format</span><span class="py-op">=</span><span class="py-string">u"%d.%m.%Y"</span><span class="py-op">,</span> <span class="py-param">date</span><span class="py-op">=</span><span class="py-name">None</span><span class="py-op">,</span> <span class="py-param">inflected</span><span class="py-op">=</span><span class="py-name">False</span><span class="py-op">,</span> <span class="py-param">inflected_day</span><span class="py-op">=</span><span class="py-name">False</span><span class="py-op">)</span><span class="py-op">:</span> </span>
</div><div id="ru_strftime-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ru_strftime-expanded"><span class="py-lineno">186</span>  <span class="py-line">    <span class="py-docstring">"""</span> </span>
<span class="py-lineno">187</span>  <span class="py-line"><span class="py-docstring">    Russian strftime without locale</span> </span>
<span class="py-lineno">188</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno">189</span>  <span class="py-line"><span class="py-docstring">    @param format: strftime format, default=u'%d.%m.%Y'</span> </span>
<span class="py-lineno">190</span>  <span class="py-line"><span class="py-docstring">    @type format: C{unicode}</span> </span>
<span class="py-lineno">191</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno">192</span>  <span class="py-line"><span class="py-docstring">    @param date: date value, default=None translates to today</span> </span>
<span class="py-lineno">193</span>  <span class="py-line"><span class="py-docstring">    @type date: C{datetime.date} or C{datetime.datetime}</span> </span>
<span class="py-lineno">194</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno">195</span>  <span class="py-line"><span class="py-docstring">    @return: strftime string</span> </span>
<span class="py-lineno">196</span>  <span class="py-line"><span class="py-docstring">    @rtype: unicode</span> </span>
<span class="py-lineno">197</span>  <span class="py-line"><span class="py-docstring"></span> </span>
<span class="py-lineno">198</span>  <span class="py-line"><span class="py-docstring">    @raise TypeError: input parameters' check failed</span> </span>
<span class="py-lineno">199</span>  <span class="py-line"><span class="py-docstring">    """</span> </span>
<span class="py-lineno">200</span>  <span class="py-line">    <span class="py-keyword">if</span> <span class="py-name">date</span> <span class="py-keyword">is</span> <span class="py-name">None</span><span class="py-op">:</span> </span>
<span class="py-lineno">201</span>  <span class="py-line">        <span class="py-name">date</span> <span class="py-op">=</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">today</span><span class="py-op">(</span><span class="py-op">)</span> </span>
<span class="py-lineno">202</span>  <span class="py-line">    <span id="link-34" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-34', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-35" class="py-name"><a title="pytils.utils.check_type" class="py-name" href="#" onclick="doclink('link-35', 'check_type', 'Function pytils.utils.check_type()=pytils.utils-module.html#check_type'); return false;">check_type</a></span></span><span class="py-op">(</span><span class="py-string">'date'</span><span class="py-op">,</span> <span class="py-op">(</span><span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">date</span><span class="py-op">,</span> <span class="py-name">datetime</span><span class="py-op">.</span><span class="py-name">datetime</span><span class="py-op">)</span><span class="py-op">)</span> </span>
<span class="py-lineno">203</span>  <span class="py-line">    <span id="link-36" class="py-name"><a title="pytils.utils" class="py-name" href="#" onclick="doclink('link-36', 'utils', 'Module pytils.utils=pytils.utils-module.html'); return false;">utils</a></span></span><span class="py-op">.</span><span id="link-37" class="py-name"><a title="pytils.utils.check_type" class="py-name" href="#" onclick="doclink('link-37', 'check_type', 'Function pytils.utils.check_type()=pytils.utils-module.html#check_type'); return false;">check_type</a></span></span><span class="py-op">(</span><span class="py-string">'format'</span><span class="py-op">,</span> <span class="py-name">unicode</span><span class="py-op">)</span> </span>
<span class="py-lineno">204</span>  <span class="py-line"> </span>
<span class="py-lineno">205</span>  <span class="py-line">    <span class="py-name">midx</span> <span class="py-op">=</span> <span class="py-name">inflected</span> <span class="py-keyword">and</span> <span class="py-number">2</span> <span class="py-keyword">or</span> <span class="py-number">1</span> </span>
<span class="py-lineno">206</span>  <span class="py-line">    <span class="py-name">didx</span> <span class="py-op">=</span> <span class="py-name">inflected_day</span> <span class="py-keyword">and</span> <span class="py-number">2</span> <span class="py-keyword">or</span> <span class="py-number">1</span>  </span>
<span class="py-lineno">207</span>  <span class="py-line"> </span>
<span class="py-lineno">208</span>  <span class="py-line">    <span class="py-name">format</span> <span class="py-op">=</span> <span class="py-name">format</span><span class="py-op">.</span><span class="py-name">replace</span><span class="py-op">(</span><span class="py-string">u'%a'</span><span class="py-op">,</span> <span id="link-38" class="py-name"><a title="pytils.dt.DAY_NAMES" class="py-name" href="#" onclick="doclink('link-38', 'DAY_NAMES', 'Variable pytils.dt.DAY_NAMES=pytils.dt-module.html#DAY_NAMES'); return false;">DAY_NAMES</a></span></span><span class="py-op">[</span><span class="py-name">date</span><span class="py-op">.</span><span class="py-name">weekday</span><span class="py-op">(</span><span class="py-op">)</span><span class="py-op">]</span><span class="py-op">[</span><span class="py-number">0</span><span class="py-op">]</span><span class="py-op">)</span> </span>
<span class="py-lineno">209</span>  <span class="py-line">    <span class="py-name">format</span> <span class="py-op">=</span> <span class="py-name">format</span><span class="py-op">.</span><span class="py-name">replace</span><span class="py-op">(</span><span class="py-string">u'%A'</span><span class="py-op">,</span> <span id="link-39" class="py-name"><a title="pytils.dt.DAY_NAMES" class="py-name" href="#" onclick="doclink('link-39', 'DAY_NAMES', 'Variable pytils.dt.DAY_NAMES=pytils.dt-module.html#DAY_NAMES'); return false;">DAY_NAMES</a></span></span><span class="py-op">[</span><span class="py-name">date</span><span class="py-op">.</span><span class="py-name">weekday</span><span class="py-op">(</span><span class="py-op">)</span><span class="py-op">]</span><span class="py-op">[</span><span class="py-name">didx</span><span class="py-op">]</span><span class="py-op">)</span> </span>
<span class="py-lineno">210</span>  <span class="py-line">    <span class="py-name">format</span> <span class="py-op">=</span> <span class="py-name">format</span><span class="py-op">.</span><span class="py-name">replace</span><span class="py-op">(</span><span class="py-string">u'%b'</span><span class="py-op">,</span> <span id="link-40" class="py-name"><a title="pytils.dt.MONTH_NAMES" class="py-name" href="#" onclick="doclink('link-40', 'MONTH_NAMES', 'Variable pytils.dt.MONTH_NAMES=pytils.dt-module.html#MONTH_NAMES'); return false;">MONTH_NAMES</a></span></span><span class="py-op">[</span><span class="py-name">date</span><span class="py-op">.</span><span class="py-name">month</span><span class="py-op">-</span><span class="py-number">1</span><span class="py-op">]</span><span class="py-op">[</span><span class="py-number">0</span><span class="py-op">]</span><span class="py-op">)</span> </span>
<span class="py-lineno">211</span>  <span class="py-line">    <span class="py-name">format</span> <span class="py-op">=</span> <span class="py-name">format</span><span class="py-op">.</span><span class="py-name">replace</span><span class="py-op">(</span><span class="py-string">u'%B'</span><span class="py-op">,</span> <span id="link-41" class="py-name"><a title="pytils.dt.MONTH_NAMES" class="py-name" href="#" onclick="doclink('link-41', 'MONTH_NAMES', 'Variable pytils.dt.MONTH_NAMES=pytils.dt-module.html#MONTH_NAMES'); return false;">MONTH_NAMES</a></span></span><span class="py-op">[</span><span class="py-name">date</span><span class="py-op">.</span><span class="py-name">month</span><span class="py-op">-</span><span class="py-number">1</span><span class="py-op">]</span><span class="py-op">[</span><span class="py-name">midx</span><span class="py-op">]</span><span class="py-op">)</span> </span>
<span class="py-lineno">212</span>  <span class="py-line"> </span>
<span class="py-lineno">213</span>  <span class="py-line">    <span class="py-comment"># strftime must be str, so encode it to utf8:</span> </span>
<span class="py-lineno">214</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-name">s_format</span> <span class="py-op">=</span> <span class="py-name">format</span><span class="py-op">.</span><span class="py-name">encode</span><span class="py-op">(</span><span class="py-string">"utf-8"</span><span class="py-op">)</span> </span>
<span class="py-lineno">215</span>  <span class="py-line">    <span class="py-name">s_res</span> <span class="py-op">=</span> <span class="py-name">date</span><span class="py-op">.</span><span class="py-name">strftime</span><span class="py-op">(</span><span class="py-name">s_format</span><span class="py-op">)</span> </span>
<span class="py-lineno">216</span>  <span class="py-line">    <span class="py-comment"># and back to unicode</span> </span>
<span class="py-lineno">217</span>  <span class="py-line"><span class="py-comment"></span>    <span class="py-name">u_res</span> <span class="py-op">=</span> <span class="py-name">s_res</span><span class="py-op">.</span><span class="py-name">decode</span><span class="py-op">(</span><span class="py-string">"utf-8"</span><span class="py-op">)</span> </span>
<span class="py-lineno">218</span>  <span class="py-line"> </span>
<span class="py-lineno">219</span>  <span class="py-line">    <span class="py-keyword">return</span> <span class="py-name">u_res</span> </span>
</div><span class="py-lineno">220</span>  <span class="py-line"> </span><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="pytils-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">Generated by Epydoc
        3.0alpha3 on Sun Oct 29 00:35:03 2006</td>
    <td align="right" class="footer">
      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie()
  // -->
</script>
  
</body>
</html>
